//package com.smsc.headend.task.engine.manager;
//
//import cn.hutool.core.collection.CollUtil;
//import cn.hutool.core.convert.Convert;
//import cn.hutool.core.date.SystemClock;
//import com.google.common.cache.LoadingCache;
//import com.smsc.headend.module.asset.entity.Meter;
//import com.smsc.headend.module.common.entity.ScalerUnit;
//import com.smsc.headend.module.data.dto.DataItemDTO;
//import com.smsc.headend.module.data.entity.MapDdsMdmWf;
//import com.smsc.headend.module.data.entity.RdMeterReadsLp;
//import com.smsc.headend.module.data.enums.CollectionSource;
//import com.smsc.headend.module.event.entity.RdEventMeter;
//import com.smsc.headend.module.task.dto.TaskEventData;
//import com.smsc.headend.module.vending.entity.MapVendingDataItem;
//import com.smsc.headend.task.engine.service.FeignAssetManagementService;
//import com.smsc.headend.task.engine.service.asset.AssetService;
//import com.smsc.headend.task.engine.service.dds.MapDdsMdmWfService;
//import org.junit.After;
//import org.junit.Before;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.mockito.InjectMocks;
//import org.mockito.Mock;
//import org.mockito.Mockito;
//import org.mockito.junit.MockitoJUnitRunner;
//import org.springframework.beans.BeanUtils;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//import java.util.concurrent.ExecutionException;
//
//import static org.mockito.ArgumentMatchers.any;
//
//
//@RunWith(MockitoJUnitRunner.class)
//public class DdsFilterMdmDataManagerTestbak {
//
//    @InjectMocks
//    DdsFilterMdmDataManager ddsFilterMdmDataManager;
//
//    @Mock
//    AssetService assetService;
//
//    @Mock
//    Map<String, MapDdsMdmWf> mappingDataRules;
//    @Mock
//    LoadingCache<String, ScalerUnit> subDataItemScaleUnit;
//    @Mock
//    LoadingCache<String, String> subDataItemCoverRate;
//
//    @Mock
//    FeignAssetManagementService feignAssetManagementService;
//
//    @Mock
//    MapDdsMdmWfService mapDdsMdmWfService;
//
//    @Before
//    public void setUp() throws Exception {
//    }
//
//    @After
//    public void tearDown() throws Exception {
//    }
//
//    @Test
//    public void transformMeterReadResultForMdm() throws ExecutionException {
//        List<RdMeterReadsLp> taskReadDatas = new ArrayList<>();
//
//        RdMeterReadsLp rdMeterReadsLp = new RdMeterReadsLp();
//
//        rdMeterReadsLp.setMeterId(1L);
//        rdMeterReadsLp.setLpDataItemId(1020070010L);
//        rdMeterReadsLp.setDataItemId(1020030021102L);
//        rdMeterReadsLp.setValidity(1);
//        rdMeterReadsLp.setTv(1632403800L);
//        rdMeterReadsLp.setValue("112789");
//        rdMeterReadsLp.setSrc(CollectionSource.ARR.getSource());
//        taskReadDatas.add(rdMeterReadsLp);
//        int span = 15 * 60;
//        for (int i = 1; i < 8; i++) {
//            RdMeterReadsLp readsLp2 = new RdMeterReadsLp();
//            BeanUtils.copyProperties(rdMeterReadsLp, readsLp2);
//            readsLp2.setTv(i * span + rdMeterReadsLp.getTv());
//            taskReadDatas.add(readsLp2);
//        }
//        MapDdsMdmWf mapDdsMdmWf = new MapDdsMdmWf();
//        mapDdsMdmWf.setMdmDataTypeId(22100);
//        mapDdsMdmWf.setMdmDataAttr(3);
//        mapDdsMdmWf.setMdmDataSeqIndex(0);
//        mapDdsMdmWf.setMdmDataTypeName("RD_ELEC_CODE");
//        mapDdsMdmWf.setMdmDataItemId("RD_ELEC_CODE.VAL_PP_3");
//        Meter meter = new Meter();
//        meter.setMeterId(1L);
//        meter.setCustomerSn("testMeter001");
//        meter.setModelId(1L);
//        ScalerUnit scalerUnit = new ScalerUnit();
//        scalerUnit.setUnit(27);
//        scalerUnit.setScaler(1L);
//
//        Mockito.when(mappingDataRules.get(any())).thenReturn(mapDdsMdmWf);
//        Mockito.when(assetService.getMeterById(any())).thenReturn(meter);
//        Mockito.when(subDataItemScaleUnit.getIfPresent(any())).thenReturn(scalerUnit);
//        Mockito.when(subDataItemCoverRate.getIfPresent(any())).thenReturn("1000");
//        Mockito.when(assetService.getSystemProperty("DDS_SFTP_LOCALDIR")).thenReturn("/tmp/dds/");
//        ddsFilterMdmDataManager.transformMeterReadResultForMdm(taskReadDatas);
//    }
//
//    @Test
//    public void transformMeterReadResultForMdmXml() {
//        List<RdMeterReadsLp> taskReadDatas = new ArrayList<>();
//
//        RdMeterReadsLp rdMeterReadsLp = new RdMeterReadsLp();
//
//        rdMeterReadsLp.setMeterId(1L);
//        rdMeterReadsLp.setLpDataItemId(DdsFilterMdmDataManager.DAY_LP);
//        rdMeterReadsLp.setDataItemId(1020030021102L);
//        rdMeterReadsLp.setValidity(1);
//        rdMeterReadsLp.setTv(1632403800L);
//        rdMeterReadsLp.setValue("112789");
//        rdMeterReadsLp.setSrc(CollectionSource.ARR.getSource());
//        taskReadDatas.add(rdMeterReadsLp);
//        int span = 15 * 60;
//        for (int i = 1; i < 8; i++) {
//            RdMeterReadsLp readsLp2 = new RdMeterReadsLp();
//            BeanUtils.copyProperties(rdMeterReadsLp, readsLp2);
//            readsLp2.setTv(i * span + rdMeterReadsLp.getTv());
//            taskReadDatas.add(readsLp2);
//        }
//        MapDdsMdmWf mapDdsMdmWf = new MapDdsMdmWf();
//        mapDdsMdmWf.setMdmDataTypeId(22100);
//        mapDdsMdmWf.setMdmDataAttr(3);
//        mapDdsMdmWf.setMdmDataSeqIndex(0);
//        mapDdsMdmWf.setMdmDataTypeName("RD_ELEC_CODE");
//        mapDdsMdmWf.setMdmDataItemId("RD_ELEC_CODE.VAL_PP_3");
//        Meter meter = new Meter();
//        meter.setMeterId(1L);
//        meter.setCustomerSn("testMeter001");
//        meter.setModelId(1L);
//        ScalerUnit scalerUnit = new ScalerUnit();
//        scalerUnit.setUnit(27);
//        scalerUnit.setScaler(1L);
//
//        DataItemDTO subDataItemDto = new DataItemDTO();
//        subDataItemDto.setObis("1.0.0.2.3.2");
//
//        Object[] unitValue = new Object[2];
//        unitValue[0] = "110";
//        unitValue[1] = "kWh";
//
//        Mockito.when(assetService.getMeterById(any())).thenReturn(meter);
//        Mockito.when(feignAssetManagementService.convertDataItemValWithUnit(any(), any(), any(), any())).thenReturn(unitValue);
//        Mockito.when(assetService.getSystemProperty("DDS_MULTISPEAK_LOCAL_PATH")).thenReturn("D:/test/dds/");
//        Mockito.when(assetService.getSystemProperty("DDS_MULTISPEAK_LIMIT_DEVICE")).thenReturn("10");
//        MapVendingDataItem multiSpeakDataItem = new MapVendingDataItem();
//        multiSpeakDataItem.setVendingRef("1");
//        Mockito.when(assetService.getMultispeakDataItem(any(), any())).thenReturn(multiSpeakDataItem);
//        ddsFilterMdmDataManager.transformMeterReadResultForMdmXml(taskReadDatas);
//    }
//
//    @Test
//    public void generateXmlFilesForMdm() {
//        List<TaskEventData> taskEventDatas = CollUtil.newArrayList();
//        TaskEventData taskEventData = new TaskEventData();
//        taskEventDatas.add(taskEventData);
//        List<RdEventMeter> rdEvents = CollUtil.newArrayList();
//        taskEventData.setRdEventMeter(rdEvents);
//        long now = SystemClock.now() / 1000;
//        int span = 15 * 60;
//        for (int i = 1; i < 18; i++) {
//            RdEventMeter rdEventMeter = new RdEventMeter();
//            rdEventMeter.setMeterId(Convert.toLong(i));
//            rdEventMeter.setEventType(1);
//            rdEventMeter.setTv((i * span) + now);
//            rdEvents.add(rdEventMeter);
//        }
//        Meter meter = new Meter();
//        meter.setMeterId(1L);
//        meter.setCustomerSn("testMeter001");
//        meter.setModelId(1L);
//
//        Mockito.when(assetService.getMeterById(any())).thenReturn(meter);
//        Mockito.when(assetService.getSystemProperty("DDS_MULTISPEAK_LOCAL_PATH")).thenReturn("D:/test/dds/");
//        Mockito.when(assetService.getSystemProperty("DDS_MULTISPEAK_LIMIT_DEVICE")).thenReturn("10");
//        Mockito.when(feignAssetManagementService.getEventName(any())).thenReturn("test1");
//        ddsFilterMdmDataManager.generateXmlFilesForMdm(taskEventDatas);
//    }
//}